#ifndef CUFFTDX_FFT_14_FP64_FWD_PTX_HPP
#define CUFFTDX_FFT_14_FP64_FWD_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<405, double, 1>(cufftdx::detail::complex<double> *rmem, unsigned smem){

asm volatile (R"({
.reg .f64 fd<291>;
.reg .b64 rd<2>;
add.f64 fd57, %33, %60;
add.f64 fd58, %28, fd57;
add.f64 fd59, %38, %54;
add.f64 fd60, fd59, fd58;
add.f64 fd61, %44, %49;
add.f64 fd62, fd61, fd60;
add.f64 fd63, %35, %61;
add.f64 fd64, %29, fd63;
add.f64 fd65, %40, %56;
add.f64 fd66, fd65, fd64;
add.f64 fd67, %45, %51;
add.f64 fd68, fd67, fd66;
fma.rn.f64 fd69, fd57, 0d3FE3F3A0E28BEDD1, %28;
mul.f64 fd70, fd59, 0d3FCC7B90E3024582;
sub.f64 fd71, fd69, fd70;
mul.f64 fd72, fd61, 0d3FECD4BCA9CB5C71;
sub.f64 fd73, fd71, fd72;
sub.f64 fd74, %35, %61;
mul.f64 fd75, fd74, 0d3FE904C37505DE4B;
sub.f64 fd76, %40, %56;
mul.f64 fd77, fd76, 0dBFEF329C0558E969;
sub.f64 fd78, fd77, fd75;
sub.f64 fd79, %45, %51;
mul.f64 fd80, fd79, 0d3FDBC4C04D71ABC1;
sub.f64 fd81, fd78, fd80;
sub.f64 fd82, fd73, fd81;
add.f64 fd83, fd81, fd73;
mul.f64 fd84, fd57, 0d3FCC7B90E3024582;
sub.f64 fd85, %28, fd84;
mul.f64 fd86, fd59, 0d3FECD4BCA9CB5C71;
sub.f64 fd87, fd85, fd86;
fma.rn.f64 fd88, fd61, 0d3FE3F3A0E28BEDD1, fd87;
mul.f64 fd89, fd74, 0d3FEF329C0558E969;
mul.f64 fd90, fd76, 0d3FDBC4C04D71ABC1;
sub.f64 fd91, fd90, fd89;
fma.rn.f64 fd92, fd79, 0d3FE904C37505DE4B, fd91;
sub.f64 fd93, fd88, fd92;
add.f64 fd94, fd92, fd88;
mul.f64 fd95, fd57, 0d3FECD4BCA9CB5C71;
sub.f64 fd96, %28, fd95;
fma.rn.f64 fd97, fd59, 0d3FE3F3A0E28BEDD1, fd96;
mul.f64 fd98, fd61, 0d3FCC7B90E3024582;
sub.f64 fd99, fd97, fd98;
mul.f64 fd100, fd74, 0d3FDBC4C04D71ABC1;
mul.f64 fd101, fd76, 0d3FE904C37505DE4B;
sub.f64 fd102, fd101, fd100;
mul.f64 fd103, fd79, 0d3FEF329C0558E969;
sub.f64 fd104, fd102, fd103;
sub.f64 fd105, fd99, fd104;
add.f64 fd106, fd104, fd99;
fma.rn.f64 fd107, fd63, 0d3FE3F3A0E28BEDD1, %29;
mul.f64 fd108, fd65, 0d3FCC7B90E3024582;
sub.f64 fd109, fd107, fd108;
mul.f64 fd110, fd67, 0d3FECD4BCA9CB5C71;
sub.f64 fd111, fd109, fd110;
sub.f64 fd112, %33, %60;
mul.f64 fd113, fd112, 0d3FE904C37505DE4B;
sub.f64 fd114, %38, %54;
mul.f64 fd115, fd114, 0dBFEF329C0558E969;
sub.f64 fd116, fd115, fd113;
sub.f64 fd117, %44, %49;
mul.f64 fd118, fd117, 0d3FDBC4C04D71ABC1;
sub.f64 fd119, fd116, fd118;
add.f64 fd120, fd119, fd111;
sub.f64 fd121, fd111, fd119;
mul.f64 fd122, fd63, 0d3FCC7B90E3024582;
sub.f64 fd123, %29, fd122;
mul.f64 fd124, fd65, 0d3FECD4BCA9CB5C71;
sub.f64 fd125, fd123, fd124;
fma.rn.f64 fd126, fd67, 0d3FE3F3A0E28BEDD1, fd125;
mul.f64 fd127, fd112, 0d3FEF329C0558E969;
mul.f64 fd128, fd114, 0d3FDBC4C04D71ABC1;
sub.f64 fd129, fd128, fd127;
fma.rn.f64 fd130, fd117, 0d3FE904C37505DE4B, fd129;
add.f64 fd131, fd130, fd126;
sub.f64 fd132, fd126, fd130;
mul.f64 fd133, fd63, 0d3FECD4BCA9CB5C71;
sub.f64 fd134, %29, fd133;
fma.rn.f64 fd135, fd65, 0d3FE3F3A0E28BEDD1, fd134;
mul.f64 fd136, fd67, 0d3FCC7B90E3024582;
sub.f64 fd137, fd135, fd136;
mul.f64 fd138, fd112, 0d3FDBC4C04D71ABC1;
mul.f64 fd139, fd114, 0d3FE904C37505DE4B;
sub.f64 fd140, fd139, fd138;
mul.f64 fd141, fd117, 0d3FEF329C0558E969;
sub.f64 fd142, fd140, fd141;
add.f64 fd143, fd142, fd137;
sub.f64 fd144, fd137, fd142;
add.f64 fd145, %36, %62;
add.f64 fd146, %30, fd145;
add.f64 fd147, %41, %57;
add.f64 fd148, fd147, fd146;
add.f64 fd149, %46, %52;
add.f64 fd150, fd149, fd148;
add.f64 fd151, %37, %63;
add.f64 fd152, %32, fd151;
add.f64 fd153, %43, %59;
add.f64 fd154, fd153, fd152;
add.f64 fd155, %48, %53;
add.f64 fd156, fd155, fd154;
fma.rn.f64 fd157, fd145, 0d3FE3F3A0E28BEDD1, %30;
mul.f64 fd158, fd147, 0d3FCC7B90E3024582;
sub.f64 fd159, fd157, fd158;
mul.f64 fd160, fd149, 0d3FECD4BCA9CB5C71;
sub.f64 fd161, fd159, fd160;
sub.f64 fd162, %37, %63;
mul.f64 fd163, fd162, 0d3FE904C37505DE4B;
sub.f64 fd164, %43, %59;
mul.f64 fd165, fd164, 0dBFEF329C0558E969;
sub.f64 fd166, fd165, fd163;
sub.f64 fd167, %48, %53;
mul.f64 fd168, fd167, 0d3FDBC4C04D71ABC1;
sub.f64 fd169, fd166, fd168;
sub.f64 fd170, fd161, fd169;
add.f64 fd171, fd169, fd161;
mul.f64 fd172, fd145, 0d3FCC7B90E3024582;
sub.f64 fd173, %30, fd172;
mul.f64 fd174, fd147, 0d3FECD4BCA9CB5C71;
sub.f64 fd175, fd173, fd174;
fma.rn.f64 fd176, fd149, 0d3FE3F3A0E28BEDD1, fd175;
mul.f64 fd177, fd162, 0d3FEF329C0558E969;
mul.f64 fd178, fd164, 0d3FDBC4C04D71ABC1;
sub.f64 fd179, fd178, fd177;
fma.rn.f64 fd180, fd167, 0d3FE904C37505DE4B, fd179;
sub.f64 fd181, fd176, fd180;
add.f64 fd182, fd180, fd176;
mul.f64 fd183, fd145, 0d3FECD4BCA9CB5C71;
sub.f64 fd184, %30, fd183;
fma.rn.f64 fd185, fd147, 0d3FE3F3A0E28BEDD1, fd184;
mul.f64 fd186, fd149, 0d3FCC7B90E3024582;
sub.f64 fd187, fd185, fd186;
mul.f64 fd188, fd162, 0d3FDBC4C04D71ABC1;
mul.f64 fd189, fd164, 0d3FE904C37505DE4B;
sub.f64 fd190, fd189, fd188;
mul.f64 fd191, fd167, 0d3FEF329C0558E969;
sub.f64 fd192, fd190, fd191;
sub.f64 fd193, fd187, fd192;
add.f64 fd194, fd192, fd187;
fma.rn.f64 fd195, fd151, 0d3FE3F3A0E28BEDD1, %32;
mul.f64 fd196, fd153, 0d3FCC7B90E3024582;
sub.f64 fd197, fd195, fd196;
mul.f64 fd198, fd155, 0d3FECD4BCA9CB5C71;
sub.f64 fd199, fd197, fd198;
sub.f64 fd200, %36, %62;
mul.f64 fd201, fd200, 0d3FE904C37505DE4B;
sub.f64 fd202, %41, %57;
mul.f64 fd203, fd202, 0dBFEF329C0558E969;
sub.f64 fd204, fd203, fd201;
sub.f64 fd205, %46, %52;
mul.f64 fd206, fd205, 0d3FDBC4C04D71ABC1;
sub.f64 fd207, fd204, fd206;
add.f64 fd208, fd207, fd199;
sub.f64 fd209, fd199, fd207;
mul.f64 fd210, fd151, 0d3FCC7B90E3024582;
sub.f64 fd211, %32, fd210;
mul.f64 fd212, fd153, 0d3FECD4BCA9CB5C71;
sub.f64 fd213, fd211, fd212;
fma.rn.f64 fd214, fd155, 0d3FE3F3A0E28BEDD1, fd213;
mul.f64 fd215, fd200, 0d3FEF329C0558E969;
mul.f64 fd216, fd202, 0d3FDBC4C04D71ABC1;
sub.f64 fd217, fd216, fd215;
fma.rn.f64 fd218, fd205, 0d3FE904C37505DE4B, fd217;
add.f64 fd219, fd218, fd214;
sub.f64 fd220, fd214, fd218;
mul.f64 fd221, fd151, 0d3FECD4BCA9CB5C71;
sub.f64 fd222, %32, fd221;
fma.rn.f64 fd223, fd153, 0d3FE3F3A0E28BEDD1, fd222;
mul.f64 fd224, fd155, 0d3FCC7B90E3024582;
sub.f64 fd225, fd223, fd224;
mul.f64 fd226, fd200, 0d3FDBC4C04D71ABC1;
mul.f64 fd227, fd202, 0d3FE904C37505DE4B;
sub.f64 fd228, fd227, fd226;
mul.f64 fd229, fd205, 0d3FEF329C0558E969;
sub.f64 fd230, fd228, fd229;
add.f64 fd231, fd230, fd225;
sub.f64 fd232, fd225, fd230;
mul.f64 fd233, fd170, 0d3FECD4BCA9CB5C71;
mul.f64 fd234, fd208, 0dBFDBC4C04D71ABC1;
sub.f64 fd235, fd233, fd234;
mul.f64 fd236, fd208, 0d3FECD4BCA9CB5C71;
fma.rn.f64 fd237, fd170, 0dBFDBC4C04D71ABC1, fd236;
mul.f64 fd238, fd181, 0d3FE3F3A0E28BEDD1;
mul.f64 fd239, fd219, 0dBFE904C37505DE4B;
sub.f64 fd240, fd238, fd239;
mul.f64 fd241, fd219, 0d3FE3F3A0E28BEDD1;
fma.rn.f64 fd242, fd181, 0dBFE904C37505DE4B, fd241;
mul.f64 fd243, fd193, 0d3FCC7B90E3024582;
mul.f64 fd244, fd231, 0dBFEF329C0558E969;
sub.f64 fd245, fd243, fd244;
mul.f64 fd246, fd231, 0d3FCC7B90E3024582;
fma.rn.f64 fd247, fd193, 0dBFEF329C0558E969, fd246;
mul.f64 fd248, fd194, 0dBFCC7B90E3024582;
mul.f64 fd249, fd232, 0dBFEF329C0558E969;
sub.f64 fd250, fd248, fd249;
mul.f64 fd251, fd232, 0dBFCC7B90E3024582;
fma.rn.f64 fd252, fd194, 0dBFEF329C0558E969, fd251;
mul.f64 fd253, fd182, 0dBFE3F3A0E28BEDD1;
mul.f64 fd254, fd220, 0dBFE904C37505DE4B;
sub.f64 fd255, fd253, fd254;
mul.f64 fd256, fd220, 0dBFE3F3A0E28BEDD1;
fma.rn.f64 fd257, fd182, 0dBFE904C37505DE4B, fd256;
mul.f64 fd258, fd171, 0dBFECD4BCA9CB5C71;
mul.f64 fd259, fd209, 0dBFDBC4C04D71ABC1;
sub.f64 fd260, fd258, fd259;
mul.f64 fd261, fd209, 0dBFECD4BCA9CB5C71;
fma.rn.f64 fd262, fd171, 0dBFDBC4C04D71ABC1, fd261;
add.f64 %1, fd68, fd156;
add.f64 %0, fd62, fd150;
add.f64 %3, fd120, fd237;
add.f64 %2, fd82, fd235;
add.f64 %5, fd131, fd242;
add.f64 %4, fd93, fd240;
add.f64 %7, fd143, fd247;
add.f64 %6, fd105, fd245;
add.f64 %9, fd144, fd252;
add.f64 %8, fd106, fd250;
add.f64 %11, fd132, fd257;
add.f64 %10, fd94, fd255;
add.f64 %13, fd121, fd262;
add.f64 %12, fd83, fd260;
sub.f64 %15, fd68, fd156;
sub.f64 %14, fd62, fd150;
sub.f64 %17, fd120, fd237;
sub.f64 %16, fd82, fd235;
sub.f64 %19, fd131, fd242;
sub.f64 %18, fd93, fd240;
sub.f64 %21, fd143, fd247;
sub.f64 %20, fd105, fd245;
sub.f64 %23, fd144, fd252;
sub.f64 %22, fd106, fd250;
sub.f64 %25, fd132, fd257;
sub.f64 %24, fd94, fd255;
sub.f64 %27, fd121, fd262;
sub.f64 %26, fd83, fd260;
})"
     : "=d"(rmem[0].x), "=d"(rmem[0].y), "=d"(rmem[1].x), "=d"(rmem[1].y), "=d"(rmem[2].x), "=d"(rmem[2].y), "=d"(rmem[3].x), "=d"(rmem[3].y), "=d"(rmem[4].x), "=d"(rmem[4].y), "=d"(rmem[5].x), "=d"(rmem[5].y), "=d"(rmem[6].x), "=d"(rmem[6].y), "=d"(rmem[7].x), "=d"(rmem[7].y), "=d"(rmem[8].x), "=d"(rmem[8].y), "=d"(rmem[9].x), "=d"(rmem[9].y), "=d"(rmem[10].x), "=d"(rmem[10].y), "=d"(rmem[11].x), "=d"(rmem[11].y), "=d"(rmem[12].x), "=d"(rmem[12].y), "=d"(rmem[13].x), "=d"(rmem[13].y): "d"(rmem[0].x), "d"(rmem[0].y), "d"(rmem[1].x), "d"(rmem[1].y), "d"(rmem[1].y), "d"(rmem[2].x), "d"(rmem[2].y), "d"(rmem[2].y), "d"(rmem[3].x), "d"(rmem[3].y), "d"(rmem[4].x), "d"(rmem[4].y), "d"(rmem[4].y), "d"(rmem[5].x), "d"(rmem[5].y), "d"(rmem[5].y), "d"(rmem[6].x), "d"(rmem[6].y), "d"(rmem[7].x), "d"(rmem[7].y), "d"(rmem[7].y), "d"(rmem[8].x), "d"(rmem[8].y), "d"(rmem[8].y), "d"(rmem[9].x), "d"(rmem[9].y), "d"(rmem[10].x), "d"(rmem[10].y), "d"(rmem[10].y), "d"(rmem[11].x), "d"(rmem[11].y), "d"(rmem[11].y), "d"(rmem[12].x), "d"(rmem[12].y), "d"(rmem[13].x), "d"(rmem[13].y));
};


#endif
